// 版权归Go作者所有。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

// Package robustio封装了在Windows上容易失败的I/O函数，
// 透明地重试错误，直到任意超时。
// 
// 错误以启发式方式分类，重试次数有界，因此此包中的函数
// 不能完全消除虚假错误。然而，它们确实大大降低了实践中的失败率。
// 
// 如果是这样的话，这个错误很可能会包含以下其中一个：
// 这个包中的函数并不能完全消除虚假错误，
// 但在实践中大大降低了它们的发生率。
package robustio

// 重命名就像操作系统。重命名，但在Windows上重试
// 文件同时读取或覆盖时可能发生的错误。
// 
// （见golang.org/issue/31247和golang.org/issue/32188。）
func Rename(oldpath, newpath string) error {
	return rename(oldpath, newpath)
}

// ReadFile就像操作系统。ReadFile，但在Windows重试时，如果同时替换该文件，可能会出现
// 错误。
// 
// （见golang.org/issue/31247和golang.org/issue/32188。）
func ReadFile(filename string) ([]byte, error) {
	return readFile(filename)
}

// RemoveAll就像操作系统。RemoveAll，但在Windows重试时，如果最近执行了目录中的可执行文件，则可能会出现错误
// 。
// 
// （见golang.org/issue/19491）
func RemoveAll(path string) error {
	return removeAll(path)
}

// IsEphemeralError报告err是否是此包中函数
// 试图缓解的错误之一。
// 
// 短暂的错误包括：
// /-syscall。错误访问被拒绝
// /-syscall。错误文件未找到
// /-internal/syscall/windows。错误共享违反
// 
// 此集合将来可能会扩展；程序不能依赖
// 任何给定错误的非暂时性。
func IsEphemeralError(err error) bool {
	return isEphemeralError(err)
}
